/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
 * File name     :  ddrc_dmc_c_union_def.h
 * Description   :  SPU DDRC DMC 相关寄存器结构体定义
 * History       :  2023/04/19 11:05:46 Create file
 */

#ifndef DDRC_DMC_C_UNION_DEFINE_H
#define DDRC_DMC_C_UNION_DEFINE_H

/* Define the union csr_ddrc_cfg_workmode3_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    tdbi            : 4  ; /* [3:0] */
        u32    tpl             : 4  ; /* [7:4] */
        u32    tcal            : 4  ; /* [11:8] */
        u32    twrcslat        : 4  ; /* [15:12] */
        u32    trdcslat        : 4  ; /* [19:16] */
        u32    rank_isolate    : 8  ; /* [27:20] */
        u32    rank_intlv_gran : 2  ; /* [29:28] */
        u32    rsv_31          : 2  ; /* [31:30] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_ddrc_cfg_workmode3_u;

/* Define the union csr_ddrc_cfg_ddrmode_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    dram_type     : 4  ; /* [3:0] */
        u32    mem_width     : 2  ; /* [5:4] */
        u32    ddr4_3ds_en   : 1  ; /* [6] */
        u32    brstlen2      : 1  ; /* [7] */
        u32    brstlen       : 1  ; /* [8] */
        u32    wr_2t_pre     : 1  ; /* [9] */
        u32    rd_2t_pre     : 1  ; /* [10] */
        u32    cmd_2t_en     : 1  ; /* [11] */
        u32    bc_en         : 1  ; /* [12] */
        u32    lpddr4_bl32   : 1  ; /* [13] */
        u32    scramb_en     : 1  ; /* [14] */
        u32    crc_en        : 1  ; /* [15] */
        u32    zqc_en        : 1  ; /* [16] */
        u32    odt_on        : 1  ; /* [17] */
        u32    rank_mode     : 2  ; /* [19:18] */
        u32    ras_dev_x8_x4 : 1  ; /* [20] */
        u32    cs_2t_pos     : 1  ; /* [21] */
        u32    sref_zqc_en   : 1  ; /* [22] */
        u32    asref_zqc_en  : 1  ; /* [23] */
        u32    bank_xor      : 3  ; /* [26:24] */
        u32    bc_inv_tie1   : 1  ; /* [27] */
        u32    bank_mode     : 4  ; /* [31:28] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_ddrc_cfg_ddrmode_u;

/* Define the union csr_ddrc_cfg_dimm_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_33          : 1  ; /* [0] */
        u32    rsv_34          : 3  ; /* [3:1] */
        u32    parity_en       : 1  ; /* [4] */
        u32    rsv_35          : 3  ; /* [7:5] */
        u32    cke_share_map   : 2  ; /* [9:8] */
        u32    rsv_36          : 2  ; /* [11:10] */
        u32    par_dly         : 1  ; /* [12] */
        u32    rsv_37          : 3  ; /* [15:13] */
        u32    rnk_grp_pos     : 4  ; /* [19:16] */
        u32    dimm_sch_gap_wr : 6  ; /* [25:20] */
        u32    dimm_sch_gap_rd : 6  ; /* [31:26] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_ddrc_cfg_dimm_u;

/* Define the union csr_ddrc_cfg_rnkvol_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    mem_col       : 3  ; /* [2:0] */
        u32    rsv_41        : 1  ; /* [3] */
        u32    mem_row       : 3  ; /* [6:4] */
        u32    rsv_42        : 1  ; /* [7] */
        u32    mem_bank      : 2  ; /* [9:8] */
        u32    mem_bankgroup : 2  ; /* [11:10] */
        u32    lg_rank       : 2  ; /* [13:12] */
        u32    rank          : 2  ; /* [15:14] */
        u32    total_vol     : 10  ; /* [25:16] */
        u32    rsv_43        : 6  ; /* [31:26] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_ddrc_cfg_rnkvol_u;

#endif // __DDRC_DMC_C_UNION_DEFINE_H__